import java.util.ArrayList;

import algorithms.*;
import templates.Operator;
import templates.State;
import watercups.operators.WaterCupOperators;
import watercups.states.WaterCupState;

public class MainClass {

	public static void main( String[] args){
		//1.Descrierea problemei
		
		  //1a. Definirea operatorilor
		 ArrayList<Operator<WaterCupState>> waterCupOperators = WaterCupOperators.returnOperators();
		
		 //1b. Definirea starii initiale
		 State<WaterCupState> waterCupInitialState = WaterCupState.initialState();
		
		 //1c. Definirea starilor finale
		 ArrayList<State<WaterCupState>> waterCupFinalState = WaterCupState.finalStates();
		
		//2.Definirea fisierului dde log, care va descrie solutia
		 String WaterCupDepth= "WaterCupDepth.txt";
		 
		 //3.Definirea contextului de rezolvare si executia strategiei respective
		 Context<WaterCupState> w;
		 w = new Context<WaterCupState>(new DepthStrategy<WaterCupState>() );
		 w.executeStrategy(waterCupInitialState, waterCupFinalState, waterCupOperators, WaterCupDepth);
		 
	}
}
